/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model.gestion_mouvement;

import model.util.Direction;
import model.util.Couleur;
import java.util.ArrayList;

/**
 *
 * @author ANNAS
 */
public abstract class MouvementCalculateur {
    private boolean valid;
    private ArrayList<IPiece> pieceAManger;
    private Direction direction;
    private Couleur couleur;
    private ICase depart;
    private ICase arrive;

    public MouvementCalculateur() {
        this.pieceAManger = new ArrayList<IPiece>();
        valid = false;
    }

    protected abstract void calculMouvement();
    /**
     * @return 
     *      le chemin ou on ne se fait pas manger
     */
    public abstract ArrayList<ICase>  getPlusSureChemin();
    
    
    /**
     * 
     * @return 
     *      chemin contenant le plus de piece à manger
     */
    public abstract ArrayList<ICase>  getCheminOffensif();
    /**
     * @return the valid
     */
    public boolean isValid() {
        return valid;
    }

    /**
     * @param valid the valid to set
     */
    public void setValid(boolean valid) {
        this.valid = valid;
    }

    /**
     * @return the pieceAManger
     */
    public ArrayList<IPiece> getPieceAManger() {
        return pieceAManger;
    }

    /**
     * @return the direction
     */
    public Direction getDirection() {
        return direction;
    }

    /**
     * @param direction the direction to set
     */
    public void setDirection(Direction direction) {
        this.direction = direction;
    }

    /**
     * @return the couleur
     */
    public Couleur getCouleur() {
        return couleur;
    }

    /**
     * @param couleur the couleur to set
     */
    public void setCouleur(Couleur couleur) {
        this.couleur = couleur;
    }

    /**
     * @return the depart
     */
    public ICase getDepart() {
        return depart;
    }

    /**
     * @param depart the depart to set
     */
    public void setDepart(ICase depart) {
        this.depart = depart;
    }

    /**
     * @return the arrive
     */
    public ICase getArrive() {
        return arrive;
    }

    /**
     * @param arrive the arrive to set
     */
    public void setArrive(ICase arrive) {
        this.arrive = arrive;
    }
    
    
}
